Modern electronic systems are increasingly using microprocessors to provide greater flexibility and functionality. For example, many home entertainment components such as DVD players include microprocessors to perform video decompression. Computer peripherals such as laser printers, modems, and disk drives also include microprocessors to perform various functions. In the past many of these devices used microprocessors on circuit boards. The circuit boards would include support chips for the microprocessor such as memory, as well as chips to perform the functions of the overall device.
Advances in silicon processing techniques have allowed creation of systems, which include the microprocessor and the support logic, and memory, on a single chip. Further integration also allows systems on a chip that include additional logic functions with the microprocessor and support logic on a single chip. These microprocessors, which are “embedded” within the system, are generally referred to as embedded processors.
Because designing, verifying, laying out (the process of deciding how the various components of the processor are physically placed on a chip), producing and testing processors, including microprocessors, microcontrollers, and embedded processors are so difficult, most users purchase the microprocessors from a handful of processor companies that have expertise in designing, verifying, laying out, producing and testing processors. As used herein, simulating and simulation refers to verifying the design of the microprocessor. Conversely, testing refers to insuring a specific instance of a produced microprocessor, i.e. the semiconductor device itself functions properly.
Different users may have vastly different requirements for microprocessors, especially in the market for embedded processors. For example, different users may have different requirements for caching, memory, and memory management. Providing a small number of configurations of a processor risks losing potential users who may turn to other sources for a processor that more closely matches the user's requirements. However, providing a custom processor configuration for each user would require vast resource to design and simulate each custom configuration. Specifically, conventional approaches to processor design would require separate design databases and simulation databases for each processor configuration. Then the difficult task of laying out each processor configuration must be performed. Furthermore, the various databases associated with each configuration must be properly maintained. After production of the processor, each processor must be individually tested. Different testing procedures must be developed for each processor configuration. For example, each processor configuration is likely to require different test vector patterns. However, generation of test vectors even using automatic test pattern generation (ATPG) is very time consuming and expensive. To make a profit on the processors, processor companies could only expend the resources required for a custom processor for a limited number of processor configurations. Thus, potential users of a processor may still be forced to use products from other processor companies.
Hence there is a need for a method or system to provide multiple processor configurations with minimal resources required for designing, simulating, and testing of different processor configurations.